"""
配置文件 - 包含所有超参数和路径设置
"""
import torch

class Config:
    # 随机种子
    SEED = 42
    
    # 数据参数
    TOTAL_DATA = 2117  # 扩展后的总文件数
    BATCH_SIZE = 4     # 小批次大小，更好的梯度估计
    K = 481  # 端元个数
    SEQ_LEN = 20  # 时间序列长度
    K_NONZERO = 16  # 稀疏性要求
    
    # 模型参数
    CHANNEL_DIM = 128  # 通道维度 (64实部 + 64虚部)
    NHEAD = 4  # 注意力头数
    NUM_LAYERS = 2  # Transformer层数
    DROPOUT_RATE = 0.1
    DIM_FEEDFORWARD = 1024
    
    # 训练参数
    EPOCHS = 1500
    LEARNING_RATE = 0.001  # 增大初始学习率
    WEIGHT_DECAY = 1e-5
    
    # 学习率调度器参数
    LR_SCHEDULER = {
        'factor': 0.5,      # 学习率衰减因子
        'patience': 20,     # 等待多少个epoch后降低学习率
        'min_lr': 1e-6,     # 最小学习率
        'verbose': True     # 是否打印学习率变化信息
    }
    
    # 损失函数参数
    ALPHA = 0.1  # 稀疏性损失权重
    BETA = 0.1   # 平滑性损失权重
    
    # 数据路径
    DATA_FOLDER = "dy"
    FILE_PREFIX = "spatial_correlation_"
    FILE_EXTENSION = ".mat"
    ENDMEMBER_PATH = "Data/DC1/phasecha.mat"
    
    # 模型保存路径
    MODEL_SAVE_PATH = "dync/model_full11.pth"
    PRETRAINED_MODEL_PATH = "dync/model_smooth_transformer_final.pth"
    
    # 设备设置
    GPU_ID = 3  # 使用第4个GPU（索引从0开始）
    DEVICE = torch.device(f'cuda:{GPU_ID}' if torch.cuda.is_available() else 'cpu')
    
    # 训练控制
    FORCE_RETRAIN = True  # True表示重新训练，False表示加载预训练模型
    MAX_TRAIN_BATCHES = 446  # 限制训练批次数量（滑动窗口步长=1后有524个批次，用446个训练）
    TEST_BATCHES = 78  # 测试批次数量
    
    # 滑动窗口参数
    SLIDING_STEP = 1  # 滑动步长，数据增强倍数约38倍，最大化数据利用 